home *** CD-ROM | disk | FTP | other *** search
/ Amiga Format CD 48 / Amiga Format CD48 (1999-12-13)(Future Publishing)(GB)(Track 1 of 2)[!][issue 2000-01].iso / -serious- / misc / datelib / developer / rexx / examples / datelib-demo.rexx
OS/2 REXX Batch file  |  1999-11-01  |  17KB  |  495 lines

  1. /*
  2. **
  3. ** Copyright © 1997-1999 Dipl.-Inform. Kai Hofmann. All rights reserved.
  4. **
  5. ** $VER: DateLib-Demo.rexx 33.310 (16.06.99)
  6. */
  7.  
  8. OPTIONS RESULTS
  9. SIGNAL ON SYNTAX
  10.  
  11. CALL DATE_INIT
  12. IF RESULT ~= 0 THEN DO
  13.   EXIT 10
  14. END
  15.  
  16. /* EXAMPLE CODE FOR TIME_ FUNCTIONS */
  17. SAY TIME_TIMETOJD(22,48,0)
  18. SAY TIME_TIMEZONEFACTOR(8)
  19. SAY TIME_LMT(3600,8,53)
  20. SAY TIME_TIMETOSEC(22,48,0)
  21. SAY TIME_COMPARE2TIMES(22,48,0,22,49,0)
  22. SAY TIME_VALIDTIME(22,49,0)
  23. SAY TIME_TIMEDIFF(22,49,0,23,0,0)
  24. SAY TIME_TIMETONUM(15,5,0)
  25.  
  26. /* THE FOLLOWING FUNCTIONS HAVE THREE RETURN PARAMETERS! */
  27. /* THE FIRST FORM RETURNS ALL WITHIN A STRING (IS8601 FORMAT) */
  28. SAY TIME_JDTOTIME(0.45)
  29. SAY TIME_SECTOTIME(82200)
  30. SAY TIME_DIFFTIME(22,51,0,3600)
  31. SAY TIME_NUMTOTIME(150500)
  32.  
  33. /* THE SECOND FORM DOES THE SAME THAN THE FIRST ONE BUT YOU ALSO
  34.    SPECIFY VARIABLE NAMES FOR THE hour,min,sec */
  35. SAY TIME_JDTOTIME(0.45,'HOUR MIN SEC')
  36. SAY HOUR || ":" || MIN || ":" || SEC
  37. SAY TIME_SECTOTIME(82200,'HOUR MIN SEC')
  38. SAY HOUR || ":" || MIN || ":" || SEC
  39. SAY TIME_DIFFTIME(22,51,0,3600,'HOUR MIN SEC')
  40. SAY HOUR || ":" || MIN || ":" || SEC
  41. SAY TIME_NUMTOTIME(150600,'HOUR MIN SEC')
  42. SAY HOUR || ":" || MIN || ":" || SEC
  43.  
  44. /* */
  45. SAY TIME_FORMATTIME("%H:%M:%S",TIME_CHANGEDAY_NORMAL,2,0,19,41,0,+60)
  46. SAY TIME_FORMATTIME("%H:%M:%S",TIME_CHANGEDAY_NORMAL,2,0,19,41,0,+60,'TEXT')
  47. SAY TEXT
  48.  
  49. /* (Format template)
  50.    (Input string)
  51.    (ChangeDay)
  52.    (ChangeHour)
  53.    (DST)
  54.    (zonemin)
  55. */
  56. SAY TIME_PARSETIME("%H:%M:%S","17:06:00",TIME_CHANGEDAY_NORMAL,2,1,120);
  57. /* pos:dst:hour:min:sec:zomemin:pfmt */
  58.  
  59. SAY TIME_PARSETIME("%H:%M:%S","17:26:00",TIME_CHANGEDAY_NORMAL,2,1,120,'DST HOUR MIN SEC ZONEMIN PFMT');
  60. SAY HOUR || ":" || MIN || ":" || SEC ZONEMIN DST PFMT
  61.  
  62. SAY "------------------------------------------------------------"
  63.  
  64. /* EXAMPLE CODE FOR DATE_ FUNCTIONS */
  65. SAY DATE_JULIANLEAPYEAR(1900)
  66. SAY DATE_GREGORIANLEAPYEAR(1900)
  67. SAY DATE_HEISLEAPYEAR(1900)
  68. SAY DATE_JULIANMONTHDAYS(8,1996)
  69. SAY DATE_GREGORIANMONTHDAYS(8,1996)
  70. SAY DATE_HEISMONTHDAYS(8,1996)
  71. SAY DATE_JULIANLASTMONTHDAY(8,1996)
  72. SAY DATE_GREGORIANLASTMONTHDAY(8,1996)
  73. SAY DATE_HEISLASTMONTHDAY(8,1996)
  74. SAY DATE_JULIANYEARDAYS(1996)
  75. SAY DATE_GREGORIANYEARDAYS(1996)
  76. SAY DATE_HEISYEARDAYS(1996)
  77. SAY DATE_COMPARE2DATES(20,8,1996,11,9,1996)
  78. SAY DATE_JULIANDAYDIFF(20,8,1996,11,9,1996)
  79. SAY DATE_GREGORIANDAYDIFF(20,8,1996,11,9,1996)
  80. SAY DATE_HEISDAYDIFF(20,8,1996,11,9,1996)
  81.  
  82. /* RESULT: 0=dayerr,1=Monday,2=Tuesday,3=Wednesday,4=Thursday,5=Friday,
  83.      6=Saturday,7=Sunday */
  84. SAY DATE_JULIANWEEKDAY(20,8,1996)
  85. SAY DATE_GREGORIANWEEKDAY(20,8,1996)
  86. SAY DATE_HEISWEEKDAY(20,8,1996)
  87.  
  88. /* THE LAST PARAMETER IS THE WEEKDAY */
  89. SAY DATE_JULIANDAYSBEFOREWEEKDAY(20,8,1996,DATE_WEEKDAYS_MONDAY)
  90. SAY DATE_GREGORIANDAYSBEFOREWEEKDAY(20,8,1996,DATE_WEEKDAYS_MONDAY)
  91. SAY DATE_HEISDAYSBEFOREWEEKDAY(20,8,1996,DATE_WEEKDAYS_MONDAY)
  92. SAY DATE_JULIANDAYSAFTERWEEKDAY(20,8,1996,DATE_WEEKDAYS_MONDAY)
  93. SAY DATE_GREGORIANDAYSAFTERWEEKDAY(20,8,1996,DATE_WEEKDAYS_MONDAY)
  94. SAY DATE_HEISDAYSAFTERWEEKDAY(20,8,1996,DATE_WEEKDAYS_MONDAY)
  95.  
  96. SAY DATE_JYEARTOSCALIGER(1996)
  97. SAY DATE_GYEARTOSCALIGER(1996)
  98. SAY DATE_HYEARTOSCALIGER(1996)
  99. SAY DATE_SCALIGERYEARTOJ(6709)
  100. SAY DATE_SCALIGERYEARTOG(6709)
  101. SAY DATE_SCALIGERYEARTOH(6709)
  102. SAY DATE_JSYEARTOJD(6709)
  103. SAY DATE_GSYEARTOJD(6709)
  104. SAY DATE_HSYEARTOJD(6709)
  105. SAY DATE_JDTOMJD(2450084)
  106. SAY DATE_MJDTOJD(50083)
  107. SAY DATE_JULIANTOJD(20,8,1996)
  108. SAY DATE_GREGORIANTOJD(20,8,1996)
  109. SAY DATE_HEISTOJD(20,8,1996)
  110. SAY DATE_GREGORIANMOONAGE(20,8,1996)
  111. SAY DATE_JULIANWEEK(20,8,1996)
  112. SAY DATE_GREGORIANWEEK(20,8,1996)
  113. SAY DATE_HEISWEEK(20,8,1996)
  114.  
  115. /* FIRST PARAMETER : (DateText)
  116.    SECOND PARAMETER: (Language)
  117.    THIRD PARAMETER : (WordClass)
  118. */
  119. SAY DATE_DATETEXT(DATE_DATETEXTS_DAY,DATE_LANGUAGES_LOCALE,DATE_WORDCLASS_SINGULAR)
  120.  
  121. /*
  122.   FOURTH PARAMETER: (MoonPhase)
  123. */
  124. SAY DATE_GREGORIANMOONPHASE(20,8,1996,DATE_MOONPHASES_NEWMOON)
  125.  
  126. SAY DATE_VALIDJULIANDATE(20,8,1996)
  127. SAY DATE_VALIDGREGORIANDATE(20,8,1996)
  128. SAY DATE_VALIDHEISDATE(20,8,1996)
  129.  
  130. SAY DATE_NEXTVALIDJULIANDATE(29,2,1997)
  131. SAY DATE_NEXTVALIDGREGORIANDATE(29,2,1997)
  132. SAY DATE_NEXTVALIDHEISDATE(29,2,1997)
  133.  
  134. SAY DATE_PREVIOUSVALIDJULIANDATE(29,2,1997)
  135. SAY DATE_PREVIOUSVALIDGREGORIANDATE(29,2,1997)
  136. SAY DATE_PREVIOUSVALIDHEISDATE(29,2,1997)
  137.  
  138. SAY DATE_NEXTVALIDJULIANDATE(29,2,1997,'DAY MONTH YEAR')
  139. SAY DAY || "." || MONTH || "." || YEAR
  140. SAY DATE_NEXTVALIDGREGORIANDATE(29,2,1997,'DAY MONTH YEAR')
  141. SAY DAY || "." || MONTH || "." || YEAR
  142. SAY DATE_NEXTVALIDHEISDATE(29,2,1997,'DAY MONTH YEAR')
  143. SAY DAY || "." || MONTH || "." || YEAR
  144.  
  145. SAY DATE_PREVIOUSVALIDJULIANDATE(29,2,1997,'DAY MONTH YEAR')
  146. SAY DAY || "." || MONTH || "." || YEAR
  147. SAY DATE_PREVIOUSVALIDGREGORIANDATE(29,2,1997,'DAY MONTH YEAR')
  148. SAY DAY || "." || MONTH || "." || YEAR
  149. SAY DATE_PREVIOUSVALIDHEISDATE(29,2,1997,'DAY MONTH YEAR')
  150. SAY DAY || "." || MONTH || "." || YEAR
  151.  
  152. /*
  153.   PARAMETER: (Country)
  154. */
  155. CALL DATE_SETCOUNTRY(DATE_COUNTRIES_UNKNOWN)
  156.  
  157. /*
  158.   PARAMETER: (Weekday)
  159. */
  160. CALL DATE_SETFIRSTWEEKDAY(DATE_WEEKDAYS_MONDAY)
  161.  
  162. /*
  163.   FIRST PARAMETER : 2 DIGIT YEAR
  164.   SECOND PARAMETER: ACTUAL YEAR
  165. */
  166. SAY DATE_SUPPLEMENTCENTURY(0,1996)
  167.  
  168. /* THE FOLLOWING FUNCTIONS HAVE TWO RETURN PARAMETERS! */
  169. /* THE FIRST FORM RETURNS ALL WITHIN A STRING (IS8601 FORMAT) */
  170. SAY DATE_JULIANEASTER(1996)
  171. SAY DATE_GREGORIANEASTER(1996)
  172. SAY DATE_HEISEASTER(1996)
  173.  
  174. /* THE SECOND FORM DOES THE SAME THAN THE FIRST ONE BUT YOU ALSO
  175.    SPECIFY VARIABLE NAMES FOR THE day,month */
  176. SAY DATE_JULIANEASTER(1996,'DAY MONTH')
  177. SAY DAY || "." || MONTH || "."
  178. SAY DATE_GREGORIANEASTER(1996,'DAY MONTH')
  179. SAY DAY || "." || MONTH || "."
  180. SAY DATE_HEISEASTER(1996,'DAY MONTH')
  181. SAY DAY || "." || MONTH || "."
  182.  
  183.  
  184. /* THE FOLLOWING FUNCTIONS HAVE THREE RETURN PARAMETERS! */
  185. /* THE FIRST FORM RETURNS ALL WITHIN A STRING (IS8601 FORMAT) */
  186. SAY DATE_JDTOJULIAN(2450084)
  187. SAY DATE_JDTOGREGORIAN(2450084)
  188. SAY DATE_JDTOHEIS(2450084)
  189.  
  190. /* THE SECOND FORM DOES THE SAME THAN THE FIRST ONE BUT YOU ALSO
  191.    SPECIFY VARIABLE NAMES FOR THE day,month,year */
  192. SAY DATE_JDTOJULIAN(2450084,'DAY MONTH YEAR')
  193. SAY DAY || "." || MONTH || "." || YEAR
  194. SAY DATE_JDTOGREGORIAN(2450084,'DAY MONTH YEAR')
  195. SAY DAY || "." || MONTH || "." || YEAR
  196. SAY DATE_JDTOHEIS(2450084,'DAY MONTH YEAR')
  197. SAY DAY || "." || MONTH || "." || YEAR
  198.  
  199. /* THE FOLLOWING FUNCTIONS HAVE THREE RETURN PARAMETERS! */
  200. /* THE FIRST FORM RETURNS ALL WITHIN A STRING (IS8601 FORMAT) */
  201. /* THE FIRST PARAMETER IS THE WEEKDAY
  202.    1=Monday,2=Tuesday,3=Wednesday,4=Thursday,5=Friday,6=Saturday,7=Sunday
  203.    FOLLOWED BY THE WEEK
  204. */
  205. SAY DATE_JULIANWWTODM(DATE_WEEKDAYS_SUNDAY,16,1997)
  206. SAY DATE_GREGORIANWWTODM(DATE_WEEKDAYS_SUNDAY,16,1997)
  207. SAY DATE_HEISWWTODM(DATE_WEEKDAYS_SUNDAY,16,1997)
  208.  
  209. /* THE SECOND FORM DOES THE SAME THAN THE FIRST ONE BUT YOU ALSO
  210.    SPECIFY VARIABLE NAMES FOR THE day,month,year */
  211. SAY DATE_JULIANWWTODM(DATE_WEEKDAYS_SUNDAY,16,1997,'DAY MONTH YEAR')
  212. SAY DAY || "." || MONTH || "." || YEAR
  213. SAY DATE_GREGORIANWWTODM(DATE_WEEKDAYS_SUNDAY,16,1997,'DAY MONTH YEAR')
  214. SAY DAY || "." || MONTH || "." || YEAR
  215. SAY DATE_HEISWWTODM(DATE_WEEKDAYS_SUNDAY,16,1997,'DAY MONTH YEAR')
  216. SAY DAY || "." || MONTH || "." || YEAR
  217.  
  218. /* THE FOLLOWING FUNCTIONS HAVE ONE OR TWO RETURN PARAMETERS! */
  219. /* THE FIRST FORM RETURNS ONLY THE TEXT STRING */
  220. /* (Weekday)
  221.    (Language)
  222. */
  223. SAY DATE_WEEKDAYTEXT(DATE_WEEKDAYS_MONDAY,DATE_LANGUAGES_LOCALE)
  224. SAY DATE_WEEKDAYSHORTTEXT(DATE_WEEKDAYS_MONDAY,DATE_LANGUAGES_LOCALE)
  225.  
  226. /* (Month)    1-12
  227.    (Language)
  228. */
  229. SAY DATE_MONTHTEXT(8,DATE_LANGUAGES_LOCALE)
  230. SAY DATE_MONTHSHORTTEXT(8,DATE_LANGUAGES_LOCALE)
  231.  
  232. /* THE SECOND FORM DOES THE SAME THAN THE FIRST ONE BUT YOU ALSO
  233.    SPECIFY VARIABLE NAMES FOR THE maxlen,text */
  234. /* (Weekday)
  235.    (Language)
  236. */
  237. SAY DATE_WEEKDAYTEXT(DATE_WEEKDAYS_MONDAY,DATE_LANGUAGES_LOCALE,'MAXLEN TEXT')
  238. SAY MAXLEN || ":" || TEXT
  239. SAY DATE_WEEKDAYSHORTTEXT(DATE_WEEKDAYS_MONDAY,DATE_LANGUAGES_LOCALE,'MAXLEN TEXT')
  240. SAY MAXLEN || ":" || TEXT
  241.  
  242. /* (Month)
  243.    (Language)
  244. */
  245. SAY DATE_MONTHTEXT(8,DATE_LANGUAGES_LOCALE,'MAXLEN TEXT')
  246. SAY MAXLEN || ":" || TEXT
  247. SAY DATE_MONTHSHORTTEXT(8,DATE_LANGUAGES_LOCALE,'MAXLEN TEXT')
  248. SAY MAXLEN || ":" || TEXT
  249.  
  250. /* (Format template)
  251.    (Day)
  252.    (Month)
  253.    (Year)
  254.    (Language) 0=Locale,1=ENGLISH,2=DEUTSCH,3=FRANCAIS,4=ESPANOL,5=PORTUGUES,
  255.     6=DANSK,7=ITALIANO,8=NEDERLANDS,9=NORSK,10=SVENSKA,11=POLSKI,
  256.     12=SUOMI,13=MAGYAR,14=GREEK,15=ESPERANTO,16=TURKCE,17=LATINA,
  257.     18=RUSSIAN, 19=Czech, 20=Catalonian
  258. */
  259. SAY DATE_FORMATDATE("%Y-%m-%d",10,3,1997,DATE_LANGUAGES_LOCALE)
  260. SAY DATE_FORMATDATE("%Y-%m-%d",10,3,1997,DATE_LANGUAGES_LOCALE,'TEXT')
  261. SAY TEXT
  262.  
  263.  
  264. SAY DATE_DATETONUM(28,6,1997)
  265.  
  266. /* THE FOLLOWING FUNCTIONS HAVE THREE RETURN PARAMETERS! */
  267. /* THE FIRST FORM RETURNS ALL WITHIN A STRING (IS8601 FORMAT) */
  268. SAY DATE_NUMTODATE(19970628)
  269.  
  270. /* THE SECOND FORM DOES THE SAME THAN THE FIRST ONE BUT YOU ALSO
  271.    SPECIFY VARIABLE NAMES FOR THE day,month,year */
  272. SAY DATE_NUMTODATE(19970628,'DAY MONTH YEAR')
  273. SAY DAY || "." || MONTH || "." || YEAR
  274.  
  275. /* (Format template)
  276.    (Input String)
  277.    (Language)
  278.    (Calendars)
  279.    (Actual JD)
  280. */
  281. SAY DATE_PARSEDATE("%Y-%m-%d","1997-06-28",DATE_LANGUAGES_LOCALE,DATE_CALENDARS_HEIS,2450809)
  282. /* pos:y-m-d:pfmt:plang */
  283. SAY DATE_PARSEDATE("%Y-%m-%d","1997-06-28",DATE_LANGUAGES_LOCALE,DATE_CALENDARS_HEIS,2450809,'DAY MONTH YEAR PFMT PLANG')
  284. SAY DAY || "." || MONTH || "." || YEAR PFMT PLANG
  285.  
  286. /* THE FOLLOWING FUNCTIONS HAVE THREE RETURN PARAMETERS! */
  287. /* THE FIRST FORM RETURNS ALL WITHIN A STRING (IS8601 FORMAT) */
  288. SAY DATE_JULIANDIFFDATERANGE(23,1,1998,0,0,1)
  289. SAY DATE_GREGORIANDIFFDATERANGE(23,1,1998,0,0,1)
  290. SAY DATE_HEISDIFFDATERANGE(23,1,1998,0,0,1)
  291.  
  292. /* THE SECOND FORM DOES THE SAME THAN THE FIRST ONE BUT YOU ALSO
  293.    SPECIFY VARIABLE NAMES FOR THE day,month,year */
  294. SAY DATE_JULIANDIFFDATERANGE(23,1,1998,0,0,1,'DAY MONTH YEAR')
  295. SAY DAY || "." || MONTH || "." || YEAR
  296. SAY DATE_GREGORIANDIFFDATERANGE(23,1,1998,0,0,1,'DAY MONTH YEAR')
  297. SAY DAY || "." || MONTH || "." || YEAR
  298. SAY DATE_HEISDIFFDATERANGE(23,1,1998,0,0,1,'DAY MONTH YEAR')
  299. SAY DAY || "." || MONTH || "." || YEAR
  300.  
  301. /* THE FOLLOWING FUNCTIONS HAVE THREE RETURN PARAMETERS! */
  302. /* THE FIRST FORM RETURNS ALL WITHIN A STRING (IS8601 FORMAT) */
  303. SAY DATE_JULIANRANGEDIFF(1,1,1998,23,1,1998)
  304. SAY DATE_GREGORIANRANGEDIFF(1,1,1998,23,1,1998)
  305. SAY DATE_HEISRANGEDIFF(1,1,1998,23,1,1998)
  306.  
  307. /* THE SECOND FORM DOES THE SAME THAN THE FIRST ONE BUT YOU ALSO
  308.    SPECIFY VARIABLE NAMES FOR THE days,months,years */
  309. SAY DATE_JULIANRANGEDIFF(1,1,1998,23,1,1998,'DAYS MONTHS YEARS')
  310. SAY YEARS || "Y" MONTHS || "M" DAYS || "D"
  311. SAY DATE_GREGORIANRANGEDIFF(1,1,1998,23,1,1998,'DAYS MONTHS YEARS')
  312. SAY YEARS || "Y" MONTHS || "M" DAYS || "D"
  313. SAY DATE_HEISRANGEDIFF(1,1,1998,23,1,1998,'DAYS MONTHS YEARS')
  314. SAY YEARS || "Y" MONTHS || "M" DAYS || "D"
  315.  
  316. /* New 33.310 functions */
  317.  
  318. SAY DATE_LEAPYEAR(1900,DATE_CALENDAR_GREGORIAN)
  319. SAY DATE_MONTHDAYS(8,1996,DATE_CALENDAR_GREGORIAN)
  320. SAY DATE_LASTMONTHDAY(8,1996,DATE_CALENDAR_GREGORIAN)
  321. SAY DATE_YEARDAYS(1996,DATE_CALENDAR_GREGORIAN)
  322. SAY DATE_DAYDIFF(20,8,1996,11,9,1996,DATE_CALENDAR_GREGORIAN)
  323. SAY DATE_WEEKDAY(20,8,1996,DATE_CALENDAR_GREGORIAN)
  324. SAY DATE_DAYSBEFOREWEEKDAY(20,8,1996,DATE_WEEKDAYS_MONDAY,DATE_CALENDAR_GREGORIAN)
  325. SAY DATE_DAYSAFTERWEEKDAY(20,8,1996,DATE_WEEKDAYS_MONDAY,DATE_CALENDAR_GREGORIAN)
  326. SAY DATE_YEARTOSCALIGER(1996,DATE_CALENDAR_GREGORIAN)
  327. SAY DATE_SCALIGERYEARTOYEAR(6709,DATE_CALENDAR_GREGORIAN)
  328. SAY DATE_SYEARTOJD(6709,DATE_CALENDAR_GREGORIAN)
  329. SAY DATE_DATETOJD(20,8,1996,DATE_CALENDAR_GREGORIAN)
  330. SAY DATE_WEEK(20,8,1996,DATE_CALENDAR_GREGORIAN)
  331. SAY DATE_VALIDDATE(20,8,1996,DATE_CALENDAR_GREGORIAN)
  332.  
  333. SAY DATE_NEXTVALIDDATE(29,2,1997,DATE_CALENDAR_GREGORIAN)
  334. SAY DATE_NEXTVALIDDATE(29,2,1997,'DAY MONTH YEAR',DATE_CALENDAR_GREGORIAN)
  335. SAY DAY || "." || MONTH || "." || YEAR
  336.  
  337. SAY DATE_PREVIOUSVALIDDATE(29,2,1997,DATE_CALENDAR_GREGORIAN)
  338. SAY DATE_PREVIOUSVALIDDATE(29,2,1997,'DAY MONTH YEAR',DATE_CALENDAR_GREGORIAN)
  339. SAY DAY || "." || MONTH || "." || YEAR
  340.  
  341. SAY DATE_EASTER(1996,DATE_CALENDAR_GREGORIAN)
  342. SAY DATE_EASTER(1996,'DAY MONTH',DATE_CALENDAR_GREGORIAN)
  343. SAY DAY || "." || MONTH || "."
  344.  
  345. SAY DATE_JDTODATE(2450084,DATE_CALENDAR_GREGORIAN)
  346. SAY DATE_JDTODATE(2450084,'DAY MONTH YEAR',DATE_CALENDAR_GREGORIAN)
  347. SAY DAY || "." || MONTH || "." || YEAR
  348.  
  349. SAY DATE_WWTODM(DATE_WEEKDAYS_SUNDAY,16,1997,DATE_CALENDAR_GREGORIAN)
  350. SAY DATE_WWTODM(DATE_WEEKDAYS_SUNDAY,16,1997,'DAY MONTH YEAR',DATE_CALENDAR_GREGORIAN)
  351. SAY DAY || "." || MONTH || "." || YEAR
  352.  
  353. SAY DATE_DIFFDATERANGE(23,1,1998,0,0,1,DATE_CALENDAR_GREGORIAN)
  354. SAY DATE_DIFFDATERANGE(23,1,1998,0,0,1,'DAY MONTH YEAR',DATE_CALENDAR_GREGORIAN)
  355. SAY DAY || "." || MONTH || "." || YEAR
  356.  
  357. SAY DATE_RANGEDIFF(1,1,1998,23,1,1998,DATE_CALENDAR_GREGORIAN)
  358. SAY DATE_RANGEDIFF(1,1,1998,23,1,1998,'DAYS MONTHS YEARS',DATE_CALENDAR_GREGORIAN)
  359. SAY YEARS || "Y" MONTHS || "M" DAYS || "D"
  360.  
  361.  
  362. /* EXAMPLE CODE FOR DATETIME_ FUNCTIONS */
  363.  
  364. /* THE FOLLOWING FUNCTION HAS TWO RETURN PARAMETERS! */
  365. /* THE FIRST FORM RETURNS ALL WITHIN A STRING (GMT JD, GMT seconds) */
  366.  
  367. /* local JD, local seconds, DST, zonemin */
  368. SAY DATETIME_LOCALTOGMT(2450920,62100,1,+60)
  369. SAY DATETIME_LOCALTOGMT(2450920,62100,1,+60,'JD SECS')
  370. SAY JD || ":" || SECS
  371.  
  372. /* THE FOLLOWING FUNCTION HAS THREE RETURN PARAMETERS! */
  373. /* THE FIRST FORM RETURNS ALL WITHIN A STRING (GMT JD, GMT seconds, DST) */
  374.  
  375. /* GMT JD, GMT seconds, zonemin, ChangePrevDay, ChangeDay, ChangeNextDay, ChangeHour, DST */
  376. SAY DATETIME_GMTTOLOCAL(2450920,54900,+60,TIME_CHANGEDAY_NORMAL,TIME_CHANGEDAY_NORMAL,TIME_CHANGEDAY_NORMAL,2,1)
  377. SAY DATETIME_GMTTOLOCAL(2450920,54900,+60,TIME_CHANGEDAY_NORMAL,TIME_CHANGEDAY_NORMAL,TIME_CHANGEDAY_NORMAL,2,1,'JD SECS DST')
  378. SAY JD || ":" || SECS || ":" || DST
  379.  
  380. SYNTAX:
  381.  
  382. IF (RC ~= "RC") & (RC > 0) THEN DO
  383.   SAY "RC:" RC
  384.   SAY "Line:" SIGL
  385.   IF RC = 15 THEN DO
  386.     SAY "Maybe you have installed the light version of the '" || DATE_NAME || "' which does not support ARexx!"
  387.   END
  388. END
  389. IF DATE_OPEN = 0 THEN DO
  390.   IF ~REMLIB(DATE_NAME) THEN DO
  391.     SAY "Can not remove '" || DATE_NAME || "'"
  392.   END
  393. END
  394. EXIT 0
  395.  
  396.  
  397. DATE_INIT:
  398.   DATE_NAME       = 'date.library'
  399.   DATE_VERSION    = 33
  400.   DATE_REVISION   = 310
  401.   DATE_DISPATCHER = -492
  402.  
  403.   ADDRESS COMMAND
  404.   'VERSION' DATE_NAME DATE_VERSION DATE_REVISION '>NIL:'
  405.   IF RC > 0 THEN DO
  406.     SAY "Need '" || DATE_NAME || "'" DATE_VERSION || "." || DATE_REVISION
  407.     RETURN(10)
  408.   END
  409.  
  410.   IF ~SHOW('LIBRARIES',DATE_NAME) THEN DO
  411.     IF ~ADDLIB(DATE_NAME,0,DATE_DISPATCHER,DATE_VERSION) THEN DO
  412.       SAY "Can not add '" || DATE_NAME || "'" DATE_VERSION || "." || DATE_REVISION
  413.       RETURN(10)
  414.     END
  415.     DATE_OPEN = 0
  416.   END
  417.   ELSE DO
  418.     DATE_OPEN = 1
  419.   END
  420.  
  421.   /* Constant definitions */
  422.   TIME_CHANGEDAY_NORMAL         = 0
  423.   TIME_CHANGEDAY_WINTERTOSUMMER = 1
  424.   TIME_CHANGEDAY_SUMMERTOWINTER = 2
  425.  
  426.   DATE_MOONPHASES_NEWMOON       = 0
  427.   DATE_MOONPHASES_FIRSTQUARTER  = 1
  428.   DATE_MOONPHASES_FULLMOON      = 2
  429.   DATE_MOONPHASES_LASTQUARTER   = 3
  430.  
  431.   DATE_WEEKDAYS_DAYERR          = 0
  432.   DATE_WEEKDAYS_MONDAY          = 1
  433.   DATE_WEEKDAYS_TUESDAY         = 2
  434.   DATE_WEEKDAYS_WEDNESDAY       = 3
  435.   DATE_WEEKDAYS_THURSDAY        = 4
  436.   DATE_WEEKDAYS_FRIDAY          = 5
  437.   DATE_WEEKDAYS_SATURDAY        = 6
  438.   DATE_WEEKDAYS_SUNDAY          = 7
  439.  
  440.   DATE_DATETEXTS_DAY            = 0
  441.   DATE_DATETEXTS_MONTH          = 1
  442.   DATE_DATETEXTS_YEAR           = 2
  443.   DATE_DATETEXTS_WEEK           = 3
  444.   DATE_DATETEXTS_WEEKDAY        = 4
  445.   DATE_DATETEXTS_HOUR           = 5
  446.   DATE_DATETEXTS_MINUTE         = 6
  447.   DATE_DATETEXTS_SECOND         = 7
  448.   DATE_DATETEXTS_YESTERDAY      = 8
  449.   DATE_DATETEXTS_TODAY          = 9
  450.   DATE_DATETEXTS_TOMORROW       = 10
  451.  
  452.   DATE_WORDCLASS_SINGULAR       = 0
  453.   DATE_WORDCLASS_PLURAL         = 1
  454.   DATE_WORDCLASS_PERIODICAL     = 2
  455.  
  456.   DATE_LANGUAGES_LOCALE         = 0
  457.   DATE_LANGUAGES_ENGLISH        = 1
  458.   DATE_LANGUAGES_GERMAN         = 2
  459.   DATE_LANGUAGES_FRENCH         = 3
  460.   DATE_LANGUAGES_SPANISH        = 4
  461.   DATE_LANGUAGES_PORTUGUESE     = 5
  462.   DATE_LANGUAGES_DANISH         = 6
  463.   DATE_LANGUAGES_ITALIAN        = 7
  464.   DATE_LANGUAGES_DUTCH          = 8
  465.   DATE_LANGUAGES_NORWEGIAN      = 9
  466.   DATE_LANGUAGES_SWEDISH        = 10
  467.   DATE_LANGUAGES_POLISH         = 11
  468.   DATE_LANGUAGES_FINNISH        = 12
  469.   DATE_LANGUAGES_HUNGARIAN      = 13
  470.   DATE_LANGUAGES_GREEK          = 14
  471.   DATE_LANGUAGES_ESPERANTO      = 15
  472.   DATE_LANGUAGES_TURKISH        = 16
  473.   DATE_LANGUAGES_LATIN          = 17
  474.   DATE_LANGUAGES_RUSSIAN        = 18
  475.   DATE_LANGUAGES_CZECH          = 19
  476.   DATE_LANGUAGES_CATALONIAN     = 20
  477.   DATE_LANGUAGES_SERBIAN        = 21
  478.   DATE_LANGUAGES_LASTLANGUAGE   = 22
  479.  
  480.   DATE_COUNTRIES_UNKNOWN        = 0
  481.   DATE_COUNTRIES_ITALIA         = 1
  482.   DATE_COUNTRIES_DEUTSCHLAND    = 2
  483.   DATE_COUNTRIES_SCHWEIZ        = 3
  484.   DATE_COUNTRIES_DANMARK        = 4
  485.   DATE_COUNTRIES_NEDERLAND      = 5
  486.   DATE_COUNTRIES_GREATBRITAIN   = 6
  487.   DATE_COUNTRIES_USA            = 7
  488.   DATE_COUNTRIES_SWEDEN         = 8
  489.  
  490.   DATE_CALENDARS_JULIAN         = 0
  491.   DATE_CALENDARS_GREGORIAN      = 1
  492.   DATE_CALENDARS_HEIS           = 2
  493.  
  494.   RETURN(0)
  495.